//
//  Morse.h
//  MorseKeyboard
//
//  Created by David Patierno on 2/22/12.
//  Copyright (c) 2012 Google Inc. All rights reserved.
//
//  Licensed under the Apache License, Version 2.0 (the "License");
//  You may not use this file except in compliance with the License.
//  You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//

#import <Foundation/Foundation.h>

@class Morse;

// Provides methods for communicating back to the delegate from timer events.
@protocol MorseDelegate <NSObject>
- (void)morse:(Morse*)morse updatedResultText:(NSString*)resultText;
- (void)morse:(Morse*)morse updatedPendingSignals:(NSString*)pendingSignals;
@end

// Translates tap events into proper Morse Code letters and spaces.
@interface Morse : NSObject
@property(nonatomic, assign) id<MorseDelegate> delegate;
@property(nonatomic, copy) NSString* resultText;
@property(nonatomic, copy) NSString* pendingSignals;
@property(nonatomic, retain) NSDictionary* signalTable;

- (id)initWithDelegate:(id<MorseDelegate>)delegate;
- (NSString*)signalsFromText:(NSString*)text;
- (void)reset;
- (void)tapBegin;
- (void)tapEnd;
@end
